<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Student</title>
</head>

<body>
    <p th:text="${msg}"></p>
    <div><!--显示对象及其属性（基本）-->
        <p th:text="${stu}"></p><!--页面显示Student(sid=1, sname=Bob)-->
        <p th:text="${stu.sid}"></p><!--1-->
        <p th:text="${stu.sname}"></p><!--Bob-->
    </div>
    <hr/>
    <div th:object="${stu}"><!--th:object定义对象变量-->
        <p th:text="*{sid}"></p><!--th:text直接从父标签定义的变量取属性值-->
        <p th:text="*{sname}"></p><!--省去大量stu.前缀-->
    </div>
    <hr/>
    <div><!--表达式中的对象可以直接调用方法-->
        <p th:text="${stu.hashCode()}"></p>
        <p th:text="${stu.sname.split('o')[0]}"></p>
        <p th:text="${stu.sname.split('o')[1]}"></p>
    </div>
    <hr/>
    <div><!--Thymeleaf内置对象用#开头-->
        <p>环境相关内置对象</p>
        <p>全局的工具类对象</p>
        <p th:text="${today}">1997</p>
        <p th:text="${#dates.format(today,'yyyy-MM-dd')}"></p>
    </div>
    <hr/>
    <div><!--字面量-->
        <p th:text="'hello'"></p><!--字符串字面量，可以用单引号扩起，也可以直接写-->
        <p th:text="hello+world"></p>
        <p th:text="2020"></p><!--数字字面量，甚至可以进行算术运算-->
        <p th:text="2020-1"></p>
        <p th:if="true">正确</p><!--布尔类型字面量-->
        <p th:text="3==2"></p>
    </div>
    <hr/>
    <div><!--拼接-->
        字符串拼接需要用到大量的' '，Thymeleaf对此进行了简化，使用||包围即可
        <p th:text="'您好，' + ${stu.sname} + '。'"></p>
        <p th:text="|您好，${stu.sname}。|"></p>
    </div>
    <hr/>
    <div><!--运算-->
        运算尽量在${}表达式的外部进行
        <div><!--1、算术运算：+、-、*、/、%-->
            <p th:text="${stu.sid}+1"></p>
        </div>
        <div><!--2、比较运算：>、<、>=、<=、==、!=。可以使用别名。<br/>-->
            <!--可用的别名有：gt（>）、lt（<）、ge（>=）、le（<=）、not（!）、eq（==）、neq/ne（!=）-->
            <p th:text="${stu.sid}>1"></p>
        </div>
        <div><!--3、三元运算-->
            <p th:text="${stu.sname}=='Bob'?'正确':'错误'"></p><!--stu.sname等于Bob，则正确，否则错误-->
            <p th:text="${stu.sname}?'不空':'空'"></p><!--如果stu.sname不为null，则输出选项1，否则输出选项2-->
            <p th:text="${hehe}?:'空'"></p><!--上一条的简写-->
        </div>
    </div>
    <hr/>
    <table>
        <tr th:each="stu : ${students}"><!--循环-->
            <td th:text="${stu.sid}"></td>
            <td th:text="${stu.sname}"></td>
        </tr>
    </table>
    <hr/>
    <div><!--逻辑判断-->
        <p th:if="${stu.sname}">正确</p><!--th:if表达式为true才输出标签里的值-->
        <p th:unless="${stu.sid}>20">错误</p><!--th:unless与th:if相反-->
    </div>
    <hr/>
    <div th:switch="${role}"><!--分支switch-->
        <p th:case="'admin'">管理员</p>
        <p th:case="'manager'">经理</p>
        <p th:case="*">管理员</p><!--th:case="*"表示默认，放最后-->
    </div>



    <script th:inline="javascript">
        const student = /*[[${stu}]]*/ {};
        console.log(student);//输出{sid: 1, sname: "Bob"}
    </script>
</body>

</html>